package com.scrcu.core.batch.biz;


import com.scrcu.core.batch.entity.BatchInst;
import com.scrcu.core.batch.entity.BatchLock;

import java.util.List;

public interface BatchInstBiz {

	/**
	 * 查询所有BatchInst的信息及当前数据库时间
	 * 
	 * @return
	 */
	List<BatchInst> list(String group);

	/**
	 * 查询当前运行实例
	 * 
	 * @param timeout
	 *            超时时间
	 * @return null，所有批量实例都已超时
	 */
	BatchInst getActiveLock(int timeout);

	/**
	 * 更新签到时间lastTime
	 * 
	 * @param addr
	 *            批量实例地址
	 */
	void updateLastTime(String addr);

	/**
	 * 尝试注册为主调度
	 * 
	 * @param addr
	 * @param timeout
	 * @param optLock
	 * @return false，注册失败；true，注册成功
	 */
	boolean acquireLock(String addr, int timeout, BatchLock optLock);

	/**
	 * 强制注册为主调度
	 * 
	 * @param batchInst
	 */
	void lock(BatchInst batchInst);

	/**
	 * 根据主键地址获取批量实例
	 * 
	 * @param addr
	 * @return
	 */
	BatchInst get(String addr);

	/**
	 * 
	 * @param o
	 */
	Object save(BatchInst o);

	/**
	 * 
	 * @param addr
	 */
	void delete(String addr);

	/**
	 * 查询所有BatchInst的信息
	 * 
	 * @return
	 */
	List<BatchInst> list();
}
